package top.hmtools.makedata.common;

import java.io.IOException;
import java.net.URL;
import java.util.Enumeration;

import top.hmtools.makedata.MakeData;

public class ClassUtils {

	
	/**
     * 获取默认的类加载器 <br>
     * 参照spring扫描加载class中的源代码所编写。 <br>
     * 方法说明： getDefaultClassLoader <br>
     * 输入参数说明： <br>
     * @return <br>
     * 输出参数说明： <br>
     * ClassLoader
     *
     */
    public static ClassLoader getDefaultClassLoader() {
        ClassLoader cl = null;
        try {
            cl = Thread.currentThread().getContextClassLoader();
        } catch (Throwable ex) {
            // Cannot access thread context ClassLoader - falling back...
        }
        if (cl == null) {
            // No thread context class loader -> use class loader of this class.
            cl = MakeData.class.getClassLoader();
            if (cl == null) {
                // getClassLoader() returning null indicates the bootstrap
                // ClassLoader
                try {
                    cl = ClassLoader.getSystemClassLoader();
                } catch (Throwable ex) {
                    // Cannot access system ClassLoader - oh well, maybe the
                    // caller can live with null...
                }
            }
        }
        return cl;
    }

    /**
     * 获取classpath中指定前缀路径下的所有路径URL集合，包括磁盘file路径、jar路径 <br>
     * 方法说明： getURLs <br>
     * 输入参数说明： <br>
     * @param path 路径前缀（必须在classpath下） <br>
     * @return <br>
     * @throws IOException <br>
     * 输出参数说明： <br>
     * Enumeration<URL>
     *
     */
    public static Enumeration<URL> getURLs(String path) throws IOException {
        ClassLoader cl = getDefaultClassLoader();
        return (cl != null
                ? cl.getResources(path)
                : ClassLoader.getSystemResources(path));
    }
}
